<?
function greetings_records($form) {
	$form = array();

	$data = greetings_get_system_data('user');
	
	for ( $i = 0; $i < count($data); $i++) {
		$form['name['.$data[$i]['ID'].']'] = array(
			'#type' => 'textfield',
			'#size' => 50,
			'#maxlength' => 60,
			'#default_value' => $data[$i]['Name'],
		);
		
		$form['del['.$data[$i]['ID'].']'] = array(
			'#type' => 'checkbox',
		);
	}
	
	$form['submit'] = array(
		'#type' => 'submit', 
		'#value' => t('Сохранить изменения'),
	);
	
	$form['#theme'] = 'records';

	return $form;
}

function greetings_records_validate($form, &$form_state) {
	$form_state['values']['del'] = $form_state['clicked_button']['#post']['del'];
	$form_state['values']['name'] = $form_state['clicked_button']['#post']['name'];

	if (!is_array($form_state['values']['del'])) {
		$form_state['values']['del'] = array();
	}
	
	$keys = array_keys($form_state['values']['name']);
	for ( $i = 0; $i < count($form_state['values']['name']); $i++) {
		if ($form_state['values']['name'][$keys[$i]] == NULL && $form_state['values']['del'][$keys[$i]] != 1) {
			form_set_error("name[{$key[$i]}]", t('Название записи должно быть введено!'));
		}
	}
}

function greetings_records_submit($form, &$form_state) {
	global $user;
	$keys_save = array_keys(array_diff_key($form_state['values']['name'], $form_state['values']['del']));
	
	//save
	ippbx_set_db();
	for ( $i = 0; $i < count($keys_save); $i++) {
		db_query("UPDATE GreetingFiles SET Name='%s' WHERE ID=%d AND ID_User=%d", check_plain($form_state['values']['name'][$keys_save[$i]]),$keys_save[$i], $user->uid);
	}
	
	$keys_del = array_keys($form_state['values']['del']);
	for ( $i = 0; $i < count($form_state['values']['del']); $i++) {
		$path = db_result(db_query('SELECT Path FROM GreetingFiles WHERE ID=%d AND ID_User', $keys_del[$i], $user->uid));
		db_query('DELETE FROM GreetingFiles WHERE ID=%d AND ID_User', $keys_del[$i], $user->uid);
		db_query('DELETE FROM GreetingNumbers WHERE Greeting_ID=%d', $keys_del[$i]);
		if ( !file_delete($path) ) {
			drupal_set_message(t('Не удалось удалить файл.') , 'error' );
		}
	}
	ippbx_unset_db();
	
	drupal_set_message( t('Изменения сохранены.') );
}

function greetings_records_new($form) {
	global $user;
	$form = array();
	
	ippbx_set_db();
	$records = db_result( db_query('SELECT count(*) FROM GreetingFiles WHERE ID_User=%d', $user->uid) );
	ippbx_unset_db();
	
	$limit = variable_get('greeting_user_records', 10);
	if ( $records >=  $limit) {
		drupal_set_message( t('Извините, вы превысили лимит записей. Максимальное количество записей равно @limit', array('@limit' => $limit)), 'warning');
	} else {
	
		$form['#attributes'] = array('enctype' => "multipart/form-data");
		
		$form['load_record'] = array(
			'#type' => 'fieldset',
			'#title' => t('Добавление новой записи.'),
			'#collapsible' => TRUE,
		);
		
		$form['load_record']['name'] = array(
			'#type' => 'textfield',
			'#title' => t('Название'),
			'#size' => 50,
			'#description' => t('Название(алиас) файла, которое будет выводиться в системе.'),
		);
		
		$form['load_record']['upload'] = array(
			'#type' => 'file', 
			'#title' => t('Добавить новый файл.'), 
			'#size' => 60,
			'#description' => t('Укажите пусть до файла, который вы хотите закачать. Максимальный размер файла <i>@file_size</i> Мб.', array( '@file_size' => variable_get('GreetingFilesize', '3') )),
		);

		$form['load_record']['submit'] = array(
			'#type' => 'submit', 
			'#value' => t('Сохранить'),
		);
	}
	return $form;
}

function greetings_records_new_validate($form, &$form_state) {
	if($form_state['values']['name'] == NULL) {
		form_set_error('name',t('Название должно быть введено.'));
	}
	//print_r($_FILES);
	if ($_FILES['files']['error']['upload'] != 0) {
		form_set_error('upload', t('Произошла ошибка при загрузке файла.'));
	} else {
		if ($_FILES['files']['type']['upload'] != 'audio/x-wav' && $_FILES['files']['type']['upload'] != 'audio/mpeg') {
			form_set_error('upload', t('Данный формат файла не поддерживается. Загружайте аудиофайлы.'));
		}
		
		if ($_FILES['files']['size']['upload'] > variable_get('GreetingFilesize', 3)*1000000) {
			form_set_error('upload', t('Размер файла<i>(@csize мб.)</i> больше <i>@file_size</i> Мб.', 
				array( '@file_size' => variable_get('GreetingFilesize', '3'),'@csize' => round($_FILES['files']['size']['upload']/1000000,2))));
		}
		
		if ( !file_check_directory( variable_get('greeting_path', 'sites/default/files/'), 1) ) {
			form_set_error('', t('Каталог @cat не существует или доступен только для чтения.', array( '@cat' => variable_get('greeting_path', 'sites/default/files/'))));
		}
	}
}

function greetings_records_new_submit($form, &$form_state) {
	global $user;
	$filename = user_password(25);
	$form_state['values']['name'] = check_plain($form_state['values']['name']);
	if (move_uploaded_file($_FILES['files']['tmp_name']['upload'], variable_get('greeting_path', 'sites/default/files/').$filename)) {
		
		ippbx_set_db();
		db_query("INSERT INTO GreetingFiles (ID_User, Name, Path) VALUES( %d, '%s', '%s')", $user->uid ,$form_state['values']['name'], variable_get('greeting_path', 'sites/default/files/').$filename);
		ippbx_unset_db();
		
		drupal_set_message( t('Запись добавлена.') );
	} else {
		drupal_set_message( t('Неудалось загрузить файл.'), 'error');
	}
}

function theme_records($form) {
	$data = greetings_get_system_data();
	
	$headers = array( t('Название') , t('Размер <i>Мб.</i>'), t('Прослушать') );
	$rows = array();
	for ( $i = 0; $i < count($data); $i++) {
		$rows[] = array( $data[$i]['Name'], $data[$i]['FileSize'], l( t('Открыть'), 'ippbx/greting/'.$data[$i]['ID'].'/audio') );
	}

	$output = '<h3>'.t('Системные записи').'</h3>'.theme('table', $headers, $rows);

	//themed user data
	$data = greetings_get_system_data('user');
	$headers = array( t('Удалить') , t('Название') , t('Размер <i>Мб.</i>'), t('Прослушать') );
	$rows = array();
	for ( $i = 0; $i < count($data); $i++) {
		$rows[] = array( drupal_render($form['del['.$data[$i]['ID'].']']), drupal_render($form['name['.$data[$i]['ID'].']']), $data[$i]['FileSize'], l( t('Открыть'), 'ippbx/greting/'.$data[$i]['ID'].'/audio') );
	}

	$output .= '<h3>'.t('Пользовательские записи').'</h3>'.theme('table', $headers, $rows);
	$output .= drupal_render($form);
	return $output;
}
?>